/*----------------------------------------------------------------------------------------
*
*  Copyright 2019, Gao Hai Hui, <fromzeropoint@126.com>.  All rights reserved.
*  https://gitee.com/helloworldghh/xoskit.git
*  Use of this source code is governed by a MIT license
*  that can be found in the License file.
*
----------------------------------------------------------------------------------------*/
#ifndef __XOS_STL_PROTOCOL_PUBLIC_IMPL_CHECK_EXIST_H__
#define __XOS_STL_PROTOCOL_PUBLIC_IMPL_CHECK_EXIST_H__

#include "public_base.h"

namespace xos_protocol
{

    class public_check_exist : public public_base
    {
    public:
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        // 
        typedef public_base BASE;
    public:
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        // 
        public_check_exist( xos_box::i_serial * pSerial, xos_box::i_buf * pBuf ) :
            BASE( pSerial, pBuf )
        {
            value[0] = 0;
            table[0] = 0;
            uIndex = 0;
        }
        ~public_check_exist()
        {
        }
    public:
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        // 
        uint8_t uIndex;
        char value[256];
        char table[64];
    public:
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        // 
        int req_compose( int nCookie, int nCmd )
        {
            int ret = 0;
            if( 0 == ret )
            {
                ret = BASE::req_compose( nCookie, nCmd );
            }
            if( 0 == ret )
            {
                ret = BASE::pack_str( table );
            }
            if( 0 == ret )
            {
                ret = BASE::pack_int8( uIndex );
            }
            if( 0 == ret )
            {
                ret = BASE::pack_str( value );
            }
            return ret;
        }
        int req_dis_compose()
        {
            int ret = 0;
            if( 0 == ret )
            {
                ret = BASE::req_dis_compose();
            }
            if( 0 == ret )
            {
                ret = BASE::un_pack_str( table, sizeof( table ), 0, 0 );
            }
            if( 0 == ret )
            {
                ret = BASE::un_pack_int8( &uIndex );
            }
            if( 0 == ret )
            {
                ret = BASE::un_pack_str( value, sizeof( value ), 0, 0 );
            }
            return ret;
        }
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        // 
        int res_compose( int nCookie, int nCmd, int nRet )
        {
            int ret = 0;
            if( 0 == ret )
            {
                ret = BASE::res_compose( nCookie, nCmd, nRet );
            }
            return ret;
        }
        int res_dis_compose( int & nRet )
        {
            int ret = 0;
            if( 0 == ret )
            {
                ret = BASE::res_dis_compose( nRet );
            }
            return ret;
        }
    };

}

#endif // __XOS_STL_PROTOCOL_PUBLIC_IMPL_CHECK_EXIST_H__
